#ifndef __M_LOGGER_H__
#define __M_LOGGER_H__
#include<stdio.h>
#include<time.h>
#include<string.h>

#define INF 0
#define DBG 1
#define ERR 2
#define DEFAULT_LOG_LEVEL INF

//宏定义日志工具:实现程序日志的打印
//1.根据日志等级判断是否需要输出到标准输出流
//2.通过时间戳等函数获得当地时间
//3.通过宏定义将输出的日志信息借助fprintf按照指定格式输出到标准输出流中
//注：使用换行符时尽量避免空格注释等
#define LOG(level,format,...) do{\
    if(DEFAULT_LOG_LEVEL > level)break;\
    time_t t = time(NULL);\
    struct tm *lt = localtime(&t);\
    char buf[32]={0};\
    strftime(buf,31,"%H:%M:%S",lt);\
    fprintf(stdout,"%s %s:%d" format "\n",buf,__FILE__,__LINE__,##__VA_ARGS__);\
}while(0)

//设置等级日志
#define ILOG(format,...) LOG(INF,format,##__VA_ARGS__)
#define DLOG(format,...) LOG(DBG,format,##__VA_ARGS__)
#define ELOG(format,...) LOG(ERR,format,##__VA_ARGS__)

#endif